=========================================================================
ISTRUZIONI e SPECIFICHE per il PRIMO ASSEGNAMENTO INFORMATICA anno 2015
========================================================================
L'assegnamento prevede lo svolgimento di 5 esercizi.
Per ogni esercizio si richiede di realizzare alcune funzioni C e di scrivere una breve valutazione rispondendo alle domande poste.

------------------------------------------------
Estrarre il materiale dal KIT dell'assignment
------------------------------------------------
Creare una directory temporanea, copiare infokit_a2.tar  
nella directory e spostarsi nella directory appena creata. Es.

$$ mkdir Assegnamento2
$$ mv infokit_a2.tar Assegnamento2
$$ cd Assegnamento2

S-tarare i file del kit con

$$ tar xvf infokit_a2.tar

questo comando crea nella directory corrente una directory "MEDEV" con i seguenti file

$$ ls MEDEV
medev.pdf		: file contenente gli esercizi da svolgere

media.h			: file che contiene i prototipi delle funzioni 
 			da realizzare (NON MODIFICARE)

test-*.c
Makefile
			: programmi di test e Makefile per i test e 
                        la consegna dell'assegnamento (NON MODIFICARE)

*.txt			: file di dati da elaborare


README-1		: questo file

Doxyfile		: file per la generazione della documentazione in doxygen (facoltativo)

README.doxygen		:  breve descrizione di doxygen, 
                             con rimandi ai siti rilevanti
			     per chi desidera usarlo per la
                             documentazione del codice (facoltativo)

gruppo-check.pl		: uno script Perl che controlla il formato del file
			  gruppo.txt prima di effettuare la consegna
			  (NON MODIFICARE)

gruppo.txt		: un file di esempio di specifica del gruppo
			  (solo 1 studente per gruppo)
			  (deve essere aggiornato con i dati di chi consegna,
			  secondo il formato esemplificato)

========================================================================
ISTRUZIONI per la realizzazione dell'assegnamento
========================================================================

L'assegnamento prevede la realizzazione delle  funzioni i cui
prototipi sono specificati in media.h. 
Le funzioni vanno implementate in un unico file "media.c".

I commenti in media.h spiegano il comportamento delle varie funzioni,
il significato dei parametri ed i valori restituiti. La sintassi
utilizzata e' quella di doxygen, un tool per la creazione della
documentazione 'tipo javadoc' comunemente utilizzato.  Chi vuole
utilizzarlo per la produzione della documentazione puo' leggere il
README.doxygen.

Per generare la documentazione html dei file contenuti nel kit basta invocare

  bash:~$ make docu

e poi visualizzare il file ./html/index.html con un browser.

Conviene testare le funzioni man mano che vengono sviluppate con dei
main() di test evitando di scrivere tutto il codice prima di testarne
il funzionamento.  
Questo permette di localizzare molto meglio errori ed anomalie.

Solo quando siamo ragionevolmente convinti della correttezza del
codice si puo' passare al testing automatico del codice con i test
forniti dai docenti. 

------------------
Come procedere :
-----------------

1) leggere attentamente gli esercizi e capire il funzionamento il codice di test
   fornito dai docenti 

2) implementare le funzioni richieste in media.c ed effettuare testing
   preliminare utilizzando programmi sviluppati allo scopo

3) testare il software con i test forniti dai
  docenti. 

       bash:~$ make test1
       bash:~$ make test2
       bash:~$ make test3

  NOTA: (1) tutti i file sviluppati per la soluzione si devono trovare nella
  directory MEDEV
  (2) E' importante che il test fornito dai docenti venga effettuato solo su
  un programma gia' funzionante e testato altrimenti i risultati
  possono essere di difficile interpretazione, fuorvianti o inutili.

4) preparare la documentazione: ovvero commentare adeguatamente il/i file che
   contengono la soluzione  ed inserire una intestazione contenente il nome
   dello sviluppatore ed una dichiarazione di originalita' 

   /** \file pippo.c
       \author Nino Bixio 123456
     Si dichiara che il contenuto di questo file e' in ogni sua parte opera
     originale dell' autore.  */

     Non e' richiesto di preparare anche la documentazione formato
     doxygen. Chi volesse farlo e' invitato a leggere il  README.doxigen.

6) aggiornare il file "gruppo.txt" con nome e dati

7) consegnare il file ESCLUSIVAMENTE eseguendo

      bash:~$ make consegna

   e seguendo le istruzioni. 
   Il target consegna crea un file tar che deve essere inviato
   all'indirizzo del docente insieme a un file PDF con la discussione 
   degli esercizi con subject

   "info15: consegna secondo assegnamento"

   SE IL MAKE non funziona nel vostro ambiente di lavoro, 
   consegnare un file TAR contenente 
   ESCLUSIVAMENTE il file gruppo.txt ed i file sviluppati (media.c piu' 
   eventuali altri), il nome del file tar deve contenere CORSO di appartenenza,
   nome, cognome e matricola (che devono essere ripetuti nella mail di consegna)
   Ad esempio nel caso sello studente Bixio il file puo' chiamarsi
   
   Anino.bixio.123456-a1.tar

   generato con

   tar cvf  Anino.bixio.123456-a1.tar ./gruppo.txt ./media.c

   Tutte le consegne verranno confermate con un messaggio entro 2/3
   giorni all'indirizzo da cui e' stata effettuata la consegna. In
   caso questo non si verifichi contattare il docente.
   

---------------------------------------
 NOTE IMPORTANTI: LEGGERE ATTENTAMENTE
---------------------------------------

1) gli eleborati contenenti tar non creati con "make consegna" non
   verranno accettati ( gli studenti sono invitati a controllare che
   il tar contenga il file media.c con il comando " tar tvf
   nomefiletar " prima di inviare il file)

2) tutti gli elaborati verranno confrontati fra di loro con tool automatici
   per stabilire eventali situazioni di PLAGIO. Se gli elaborato sono 
   ragionevolmente simili verranno scartati.

3) Chi in sede di orale risulta palesemente non essere l'autore del software
   consegnato in uno degli assegnamenti dovra' ripetere l'esame

4) Tutti i comportamenti scorretti ai punti 2 e 3 verranno segnalati
   ufficialmente al presidente del corso di laurea

----------------------------
 VALUTAZIONE DELL'ASSEGNAMENTO:
----------------------------

Gli studenti che consegnano una versione funzionante e ragionevolmente
corretta dell'assegnamento entro la data di scadenza accumulano un bonus di 2
punti che verra' sommato al voto finale (vedi lucidi lezioni ed
esercitazioni).

La qualita' del codice consegnato e delle discussioni fornite per i 3
assegnamenti sara' valutata complessivamente da 0 a 30 e costituira'
il voto di partenza in sede di orale.
